package com.example.generator.controller;

import com.example.generator.entity.GenTableColumn;
import com.example.generator.service.GenTableColumnService;
import jakarta.annotation.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/gen-table-column") // 定义该 Controller 的根路径为 /api/gen-table-column
public class GenTableColumnController {

    @Resource
    private GenTableColumnService genTableColumnService; // 注入 GenTableColumnService，用于处理业务逻辑

    /**
     * 查询某个表的所有字段信息
     *
     * @param tableId 表的主键 ID
     * @return 字段信息列表
     */
    @GetMapping("/list/{tableId}")
    public ResponseEntity<List<GenTableColumn>> listByTableId(@PathVariable Long tableId) {
        return ResponseEntity.ok(genTableColumnService.list()); // 根据表 ID 获取字段信息列表
    }

    /**
     * 新增字段信息
     *
     * @param column 字段信息对象
     * @return 操作结果（成功或失败）
     */
    @PostMapping("/save")
    public ResponseEntity<String> save(@RequestBody GenTableColumn column) {
        boolean result = genTableColumnService.save(column); // 调用 Service 层方法保存字段信息
        return result ? ResponseEntity.ok("保存成功") : ResponseEntity.status(500).body("保存失败");
    }

    /**
     * 更新字段信息
     *
     * @param column 字段信息对象
     * @return 操作结果（成功或失败）
     */
    @PutMapping("/update")
    public ResponseEntity<String> update(@RequestBody GenTableColumn column) {
        boolean result = genTableColumnService.updateById(column); // 调用 Service 层方法更新字段信息
        return result ? ResponseEntity.ok("更新成功") : ResponseEntity.status(500).body("更新失败");
    }

    /**
     * 删除字段信息
     *
     * @param id 字段的主键 ID
     * @return 操作结果（成功或失败）
     */
    @DeleteMapping("/{id}")
    public ResponseEntity<String> delete(@PathVariable Long id) {
        boolean result = genTableColumnService.removeById(id); // 调用 Service 层方法删除字段信息
        return result ? ResponseEntity.ok("删除成功") : ResponseEntity.status(500).body("删除失败");
    }
}